#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File   : yield_contextmanager.py
# @Email  : xuexia_xu@feidee.com
# @Time   : 2024/4/24 15:55
# @Desc   :
"""
在上面的代码中，通过使用上下文管理器（contextmanager）来临时提升了日志的等级，yield表示with块中的语句
"""

import logging
import contextlib


def foobar():
    logging.debug('Some debug data')
    logging.error('Some error data')
    logging.debug('More debug data')


@contextlib.contextmanager
def debug_logging(level):
    logger = logging.getLogger()
    old_level = logger.getEffectiveLevel()
    logger.setLevel(level)
    try:
        yield  # 这里表示with块中的语句
    finally:
        logger.setLevel(old_level)


with debug_logging(logging.DEBUG):
    print('inside context')
    foobar()
# print('outside context')
# foobar()
